PICTというツール(2)
こんにちは、森永です。
前回の続きで、テストケース生成ツール PICTの検証をしたいと思います。
いざっ!と思ったのですが、自宅のWindows機が何故だか起動しません…。
色々とやってみても、状況は変わりません(泣)
仕方がないので、今回は「Ubuntu10.04 + Wine」というあまり賛同を得られそうにない環境で検証することにしました。
前回使用したデータをサルベージすることが出来たのは、不幸中の幸いでした。
再びPICTのインストール
Ubuntu + Wine上への、PICTの再インストールです。
ターミナルから「cmd.exe」を起動し、更に「msiexec.exe」を使用してPICTのインストーラを実行します。
全く問題なくインストール作業が完了しました。
生成結果の検証
まず、エミュレーター上で生成するテストケースは正しいのか、つまりWindows上で生成した結果とWineの結果の差異を検証します。
最初に、分かり易くWindowsの結果ファイルを「Windows.txt」と変名もしておきます。
それと、前回のパラメーターに路線名を付け加えます。例えば、「東京」といっても、山手線と丸の内線がありますからね。
Windows上で生成した結果ファイルにも、同じく路線名を付加しておきます。
次に、いよいよUbintu上でPICTを実行します。
これも、問題なく実行することができました。
そして、WindowsとUbuntuの結果の差異検証。
2つのファイルをdiffで比較した結果、差異はないことが確認できました。
さて、お待たせしました。いよいよ、テストケースの妥当性の検証です。
PICTは基本的に2つのパラメーターの組合せを網羅するツールですので、今回はこのケースについて検証をします。
組合せが可能なパラメーターの一覧を作成します。
全部で、28×(11+9+9)+11×(9+9)+9×9=1,091通りになります。
これらの組合せが、生成されたテストケースに全て含まれているのでしょうか?
折角のUbuntuなので、検証ツールをシェルで作成しました。
#!/bin/bash ############################################################################### # シェル内関数定義 ############################################################################### helpMessage() { echo "" echo "名称: verify.sh" echo "形式: verify.sh [-r resultfile -p candidatefile | [-h | --help]]" echo "概要: パラメタの組合せ候補が、pictが生成した組合せ結果に含まれる" echo " かを検査します。組合せ結果に含まれない候補を、標準出力に出" echo " 力します。" echo "引数: -r resultfile 組合せ結果ファイルを指定します。" echo " -p candidatefile 組合せ候補ファイルを指定します。" echo " -h | --help このヘルプを表示します。" echo "" exit 0 } usageMessage() { echo "usage: verify.sh [-r resultfile -p candidatefile | [-h | --help]]" 1>&2 exit 1 } nofileMessage() { echo "$@: file not found." 1>&2 exit 2 } ############################################################################### # 引数処理 ############################################################################### # ヘルプ表示処理 for argv in $@ do if [ "$argv" = "-h" -o "$argv" = "--help" ]; then helpMessage exit $? fi done # 引数の数をチェック if [ $# -lt 4 ]; then usageMessage exit $? fi # パラメタの初期化 unset RESULT_FILE unset ALL_PAIRS # パラメタの取得 while getopts r:p: argv do case "$argv" in "r") RESULT_FILE="$OPTARG" ;; "p") ALL_PAIRS="$OPTARG" ;; esac done # パラメタの長さチェック if [ ${#RESULT_FILE} -le 0 ]; then usageMessage exit $? fi if [ ${#ALL_PAIRS} -le 0 ]; then usageMessage exit $? fi # ファイルの存在チェック if [ ! -f "$RESULT_FILE" ]; then nofileMessage "$RESULT_FILE" exit ? fi if [ ! -f "$ALL_PAIRS" ]; then nofileMessage "$ALL_PAIRS" exit ? fi ############################################################################### # メイン処理 ############################################################################### # 組合せ候補をファイルから1行ずつ読み出す cat $ALL_PAIRS | while read pair_line do # 組合せを分解する PAIR_MEMBERS=(`echo $pair_line | sed -e 's/\t/ /g'`) # PICTの出力結果から検査対象になる全行を読み出す res_line=`grep ${PAIR_MEMBERS[0]} $RESULT_FILE` RES_MEMBERS=(`echo $res_line | sed -e 's/\t/ /g'`) # PICT出力結果に組合せ候補が含まれるか検査する found=0 for res_mem in ${RES_MEMBERS[@]} do if [ "$res_mem" = ${PAIR_MEMBERS[1]} ]; then found=1 break; fi done # 検査結果の出力 if [ $found -eq 0 ]; then echo "${pair_line}: not found." 1>&2 fi done
引数で、テストケースと組合せ候補のファイルを渡す仕様です。検出できなかった組合せは、メッセージを表示します。
Ubuntu.txtの文字コードをUTF-8に変更することと、改行コードからCRを取り除くことも忘れずに。
実行の結果、全ての組合せが網羅されていることが分かりました。
念の為、検証ツールにバグはないのかを検証してみます。
組合せ候補の最後に、1つ余計な行を追加しました。
追加した候補のみが検出されました。これで、バグの疑念が少しは晴れたかと思います。
次回のお題
次回は、3つのパラメーターの組合せの検証を予定しています。
それでは、また。